package com.simpou.commons.utils.exception;

import com.simpou.commons.utils.exception.model.RuleViolation;

import lombok.Delegate;


/**
 * Exceção de negócio unchecked.
 *
 * @author Jonas Pereira
 * @since 2012-07-15
 * @version 2013-05-31
 */
public class UncheckedBusinessException extends RuntimeException
    implements BusinessException {
    /**
     * Realizador efetivo das tarefas.
     */
    @Delegate
    private BusinessExceptionDelegate delegate;

    /**
     * @param violations Tipos de exceções de negócio, regras violadas ou
     * descrição das condições geradas pelo sistema dada uma entrada que não foi
     * considerada consistente.
     */
    public UncheckedBusinessException(final RuleViolation... violations) {
        super(BusinessExceptionDelegate.getMessage(violations));
        this.delegate = new BusinessExceptionDelegate(violations);
    }
}
